package com.cictec.middleware.gps.service;
//package com.cictec.middleware.gps.servic;
//
//import java.util.List;
//
//import org.slf4j.Logger;
//import org.slf4j.LoggerFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.cloud.netflix.ribbon.eureka.ZoneUtils;
//import org.springframework.stereotype.Service;
//
//import com.cictec.middleware.commons.cache.ecache.EHCacheUtils;
//import com.cictec.middleware.commons.utils.PMSUtils;
//import com.cictec.middleware.core.entity.SystemParam;
//import com.cictec.middleware.core.entity.SystemWarnSetting;
//import com.cictec.middleware.core.entity.SystemWarnSettingZone;
//import com.cictec.middleware.core.entity.SystemWarnSettingZoneTime;
//import com.cictec.middleware.core.mapper.SystemWarnSettingMapper;
//import com.cictec.middleware.core.mapper.SystemWarnSettingZoneTimeMapper;
//
///**
// * 系统报警参数设置服务
// * @author ql
// */
//@Service
//public class SystemWarnSettingService {
//
//	public static Logger logger = LoggerFactory.getLogger(SystemWarnSettingService.class);
//	
//	@Autowired
//	private SystemDataDictService systemDataDictService;
//	private String systemWarnSettingCacheName = "middleware.system.warn.setting";
//
//	
//	
//	/** 【数据库】报警设置围栏信息*/
//	public List<SystemWarnSettingZone> selectWarnSettingZone(String wzSwUuid) {
//		List<SystemWarnSettingZone> list = systemWarnSettingMapper.selectWarnSettingZonePoints(wzSwUuid);
//		for (SystemWarnSettingZone systemWarnSettingZone : list) {
//			systemWarnSettingZone.setZoneFence(ZoneUtils.createPolygonGeometry(systemWarnSettingZone.getPoints()));		// 初始化生成围栏信息，方便后边不做重复生成操作
//			List<SystemWarnSettingZoneTime> zoneTimes = selectSystemWarnTimesByZone(systemWarnSettingZone.getWzUuid());// 获取超速围栏区域时间
//			systemWarnSettingZone.setZoneTimes(zoneTimes);
//			
//		}
//		return list;
//	}
//
//	/** 【数据库】报警设置围栏时间信息*/
//	public List<SystemWarnSettingZoneTime> selectSystemWarnTimesByZone(String wzUuid) {
//		SystemWarnSettingZoneTime params = new SystemWarnSettingZoneTime();
//		params.setWztWzUuid(wzUuid);
//		List<SystemWarnSettingZoneTime> list = systemWarnSettingZoneTimeMapper.select(params);
//		return list;
//	}
//	
//	/**
//	 * 【数据库】读取报警设置-超速报警设置信息
//	 * @return
//	 */
//	public SystemWarnSetting selectSystemWarnSettingByOverSpeed(){
//		SystemWarnSetting systemWarnSetting = new SystemWarnSetting();
//		systemWarnSetting.setSwCode("8");
//		systemWarnSetting = systemWarnSettingMapper.selectOne(systemWarnSetting);
//		if (systemWarnSetting != null) {
//			// 区域限速是否开启，没有则取全局设置
//			String isZoneLimitOpen = PMSUtils.isNull(systemWarnSetting.getSwParam3());
//			if ("0".equals(isZoneLimitOpen)) {
//				/*
//				 * 此方法只是个例子，根据报警类型加载区域信息，其他报警信息具体看web端，是否实现区域信息加载
//				 */
//				// 加载区域限速数据【区域限速围栏 】【区域限速时间】
//				List<SystemWarnSettingZone> zones = selectWarnSettingZone(systemWarnSetting.getSwUuid());
//				systemWarnSetting.setZones(zones);
//			}
//		}
//		return systemWarnSetting;
//	}
//	
//	/**
//	 * 【缓存】读取报警设置-超速报警设置信息
//	 * @return
//	 */
//	public SystemWarnSetting getSystemWarnSettingByOverSpeed(){
//		String key = "overSpeedSetting";
//		SystemWarnSetting setting = EHCacheUtils.getValue(systemWarnSettingCacheName, key);
//		if(setting == null){
//			setting = selectSystemWarnSettingByOverSpeed();
//			//【120秒失效】
//			try {
//				logger.error("加载【服务器超速报警设置参数】");
//				EHCacheUtils.setValue(systemWarnSettingCacheName, key, setting, 10);
//			} catch (Exception e) {
//				e.printStackTrace();
//			}
//		}
//		return setting;
//	}
//	
//	/**
//	 * 【数据库】是否开启服务器超速报警设置
//	 * @return
//	 */
//	public boolean isStartOverSpeed() {
//		String key = "sp_super_speed_isopen";
//		String value = EHCacheUtils.getValue(systemWarnSettingCacheName, key);
//		
//		if (PMSUtils.isEmpty(value)) {
//			SystemParam systemParam = systemDataDictService.selectSystemParamByCode("sp_super_speed_isopen");
//			if (systemParam != null) {
//				value = systemParam.getSpValue();
//			}
//			try {
//				logger.error("加载【是否开启服务器超速报警设置】");
//				//【120秒失效】
//				EHCacheUtils.setValue(systemWarnSettingCacheName, key, value.equals("true") ? value : "false", 10);
//			} catch (Exception e) {
//			}
//		}
//		if ("true".equals(value)) {
//			return true;
//		}
//		return false;
//	}
//
//}
